# ДЗ 
Требуется реализовать методы в `BinarySearch.cs`

### 1. Слишком умный
★★☆☆☆

Программист Миша знает слишком много языков программирования, и порой начинает так сильно гордиться собой, что забывает выучил он уже очередной язык или нет.
Список языков Миша хранит в отсортированном массиве (разумеется).
```C#
String[] languagesList = new String {
  “ADA”, 
  “ALGOL”,
  “B”,
  “BASIC”,
  “C”,
  “C++”,
   // …
}
```

Используя бинарный поиск, напишите функцию, которая поможет забывчивому программисту.


```C#
public static boolean DoIKnowThisLanguage(String[] languagesList) {
}
```

### 2. Профессор с усами
★★☆☆☆
Профессор Сергей Витальевич очень любит дэйтинг сервисы и все время ищет там новые знакомства. 
Однако общаться с кем попало Сергей Витальевич не готов, и всегда выбирает собеседника по уровню IQ.
Ему совершенно не интересно общаться с человеком с IQ ниже какого-то порога, а также очень страшно общаться с людьми чей IQ выше чем у него самого.

Пользователи сайта хранятся в такой структуре:
```C#
class DatingUser {
	public int Iq;
  	public String Name;
}
```
Используя бинарный поиск, напишите функцию, которая поможет Профессору найти подходящих собеседников в массиве отсортированном по IQ, и вернитее имена этих собеседников.

```C#
public static List<String> FindUsers(DatingUser[] usersSortedByIQ, int lowerIQBound, int professorIQ) {...}
```

### 3. На проблему напали
★★★★★

Отдел продаж Скиллбокс всегда обзванивает потенциальных студентов наших курсов в порядке возрастания их телефонного номера. Однако после пятничного корпоратива, кто-то случайно отсортировал списки относящиеся к некоторым курсам в обратном порядке. Теперь бинарный поиск по ним не работает, и мы совершенно не можем найти в них определенные телефонные номера.

Спасите онлайн-университет от разорения, написав функцию которая умеет искать элементы в массиве который отсортирован, но в каком порядке — неизвестно.

```C#
public static int FindPhoneNumber(long[] sortedPhoneNumbers, long search) {...}
```

`sortedPhoneNumbers` — массив телефонов, который гарантированно отсортирован либо по возрастанию, либо по убыванию (вам предстоит выяснить самостоятельно, как именно он отсортирован)

`search` — телефон который требуется найти

Функция должна возвращать индекс найденного телефона в массиве или -1 если его там нет.
 